This invention relates to computers. More particularly, the invention relates to a microcoded computer design which executes the instruction set of another computer, otherwise known as a computer emulator.
Every computer has an instruction set which the computer is designed to execute. While the hardware cost to purchase these computers involve an expenditure of money, this initial hardware cost is small in comparison to the cost of producing the computer programs that are run on the computer. For this reason, new applications requiring the use of a computer would best be served economically if the computer selected could execute computer programs already written. Unfortunately, some of these new applications require a computer that is not available. Such requirements as low power consumption, small size, radiation harden circuits, and severe environment operating conditions, along with the ability to execute these pre-written computer programs, make it impossible for existing designs to be acceptable. Usually, the manufacturer of the computer for these already existing usable application programs does not offer a model of computer which meets these requirements.
To solve the problem of supplying a new computer which is able to meet these stringent specification requirements, such as the low power, small size, etc., and at the same time execute the instruction set of an already existing computer design, a new type of computer has evolved--computer emulators. A computer emulator is a special type of computer which uses microcoded instructions in firmware to control its internal circuits in response to the macroinstructions of another computer to achieve the same external results as the macroinstructions achieve in its own computer, and do so without a substantial reduction in program execution time. To the macroinstruction of the other computer, the computer emulator looks the same as its own computer, even though the internal circuit structure of the computer emulator may be entirely different than that for the other computer.
Prior-art computer emulators have used microcoded firmware routines to carry out the instructions of another computer. A mapping ROM is used to map each macroinstruction into one of these microcoded firmware routines that will emulate the macroinstruction. For this design approach, there is much duplication of microcode. This duplication results in an increase in power consumption due to the increase in the dize of the micromemory required to store the microcode. The complexity of the instruction set further controls the size of micromemory, the more complex the instruction set, the larger the memory size and resulting power consumption.
A further problem present in prior-art emulators is the throughput rate of each macroinstruction. The emulator should not significantly reduce the time required to execute each macroinstruction from the normal time for that same macroinstruction to run on its own machine. Because these prior-art emulators executed each macroinstruction, including operand derivation and instruction execution, in a sequential fashion, extra microcycles must be used where the operand deviation phase of the emulation results in more data being required from memory before the execution phase of the instruction can proceed. These extra macrocycles tend to decrease throughput rate of the emulator.
Accordingly, it would be advantageous to provide a low-power, ruggedized computer emulator capable of executing the instruction set of another computer without a significant reduction in macroinstruction emulation time by providing dual microcontrollers operating in parallel to respectively handle the operand derivation phase and the instruction execution phase of each macroinstruction. It would also be advantageous to provide a sectionalized micromemory for storing the microcode routines so that the same microcode used by various macroinstructions need not be duplicated for each macroinstruction, but is available to both microcontrollers on a need to have basis.